unit vinculacaodeficiencia_unt;

interface

uses
  Funcoes,
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DBCtrls, StdCtrls, Buttons, ExtCtrls, Grids, DBGrids, DB,
  ComCtrls, Mask, IBCustomDataSet, IBQuery, RXDBCtrl, QRCtrls, QuickRpt,
  IBStoredProc;

type
  Tvinculacaodeficiencias_frm = class(TForm)
    pnl1: TPanel;
    btnFechar: TBitBtn;
    PGCVinculacaoDeficiencias: TPageControl;
    TSVinculacaoDeficiencias: TTabSheet;
    PNSelecionar: TPanel;
    GBSelecionar: TGroupBox;
    DBNSelecionar: TDBNavigator;
    DBGSelecionar: TDBGrid;
    PNAcao: TPanel;
    SBtnEnviarSelecionado: TSpeedButton;
    SBtnEnviarTodos: TSpeedButton;
    SBtnVoltarSelecionado: TSpeedButton;
    SBtnVoltarTodos: TSpeedButton;
    PNVinculado: TPanel;
    GBVinculado: TGroupBox;
    DBGVinculado: TDBGrid;
    DBNVinculado: TDBNavigator;
    IBQSelecionar: TIBQuery;
    DSSelecionar: TDataSource;
    IBQVinculados: TIBQuery;
    DSVinculados: TDataSource;
    IBSPAcaoDeficiencia: TIBStoredProc;
    IBQVinculadosDESCRICAO: TIBStringField;
    IBQVinculadosIDPESSOA: TIntegerField;
    IBQVinculadosNOME: TIBStringField;
    IBQSelecionarIDDEFICIENCIA: TIntegerField;
    IBQSelecionarDESCRICAO: TIBStringField;
    IBQVinculadosIDDEFICIENCIA: TIntegerField;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure btnFecharClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure SBtnEnviarSelecionadoClick(Sender: TObject);
    procedure SBtnEnviarTodosClick(Sender: TObject);
    procedure SBtnVoltarSelecionadoClick(Sender: TObject);
    procedure SBtnVoltarTodosClick(Sender: TObject);
    procedure IBQSelecionarAfterOpen(DataSet: TDataSet);
    procedure IBQVinculadosAfterOpen(DataSet: TDataSet);
    procedure FormCreate(Sender: TObject);
    procedure DBGSelecionarDblClick(Sender: TObject);
    procedure DBGVinculadoDblClick(Sender: TObject);
  private
    { Private declarations }
    procedure ProcessaMsg(var Msg: TMsg; var Handled: Boolean);
    procedure AbrirTabelas;
    procedure ExecutaAcao(Acao: String; Pessoa, Deficiencia: Integer);
  public
    { Public declarations }
  end;

var
  vinculacaodeficiencias_frm: Tvinculacaodeficiencias_frm;

implementation

{$R *.dfm}

Uses principal_unt, DMSistema_unt, DMDados_unt, cadastropessoas_unt;

procedure Tvinculacaodeficiencias_frm.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
   vinculacaodeficiencias_frm := nil;
   action := caFree;
end;

procedure Tvinculacaodeficiencias_frm.btnFecharClick(Sender: TObject);
begin
   Close;
end;

procedure Tvinculacaodeficiencias_frm.ProcessaMsg(var Msg: TMsg;
  var Handled: Boolean);
begin
   if Msg.message = WM_KEYDOWN then
      if not (Screen.ActiveControl is TCustomMemo) and not (Screen.ActiveControl is TButtonControl) then
      begin
         if not (Screen.ActiveControl is TCustomControl) then
         begin
            if Msg.wParam = VK_Down then Msg.wParam := VK_Tab;
            if Msg.wParam = VK_UP then
            begin
               Msg.wParam := VK_CLEAR;
               Screen.ActiveForm.Perform(WM_NextDlgCtl,1,0);
            end;
         end;
         if Msg.wParam = VK_Return then Msg.wParam := VK_Tab;
      end;
end;

procedure Tvinculacaodeficiencias_frm.FormShow(Sender: TObject);
begin
   Application.OnMessage := ProcessaMsg;
end;

procedure Tvinculacaodeficiencias_frm.FormKeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
   Case Key of
      VK_F6  : DBGSelecionar.SetFocus;
      VK_F7  : DBGVinculado.SetFocus;
      VK_F9  : begin
                  DBGSelecionar.SetFocus;
                  SBtnEnviarSelecionadoClick(Self);
               end;
      VK_F10 : begin
                  DBGSelecionar.SetFocus;
                  SBtnEnviarTodosClick(Self);
               end;
      VK_F11 : begin
                  DBGVinculado.SetFocus;
                  SBtnVoltarSelecionadoClick(Self);
               end;
      VK_F12 : begin
                  DBGVinculado.SetFocus;
                  SBtnVoltarTodosClick(Self);
               end;
   end;
end;

procedure Tvinculacaodeficiencias_frm.SBtnEnviarSelecionadoClick(
  Sender: TObject);
begin
   if not (IBQSelecionar.Eof) then
   begin
      IBSPAcaoDeficiencia.StoredProcName := 'INCLUIRDEFICIENCIAPESSOA';
      ExecutaAcao('U',idPessoa,IBQSelecionarIDDEFICIENCIA.Value);
      AbrirTabelas;
   end;
end;

procedure Tvinculacaodeficiencias_frm.SBtnEnviarTodosClick(Sender: TObject);
begin
   if not (IBQSelecionar.Eof) then
   begin
      IBSPAcaoDeficiencia.StoredProcName := 'INCLUIRDEFICIENCIAPESSOA';
      ExecutaAcao('T',idPessoa,IBQSelecionarIDDEFICIENCIA.Value);
      AbrirTabelas;
   end;
end;

procedure Tvinculacaodeficiencias_frm.SBtnVoltarSelecionadoClick(
  Sender: TObject);
begin
   if not (IBQVinculados.Eof) then
   begin
      IBSPAcaoDeficiencia.StoredProcName := 'EXCLUIRDEFICIENCIAPESSOA';
      ExecutaAcao('U',idPessoa,IBQVinculadosIDDEFICIENCIA.Value);
      AbrirTabelas;
   end;
end;

procedure Tvinculacaodeficiencias_frm.SBtnVoltarTodosClick(Sender: TObject);
begin
   if not (IBQVinculados.Eof) then
   begin
      IBSPAcaoDeficiencia.StoredProcName := 'EXCLUIRDEFICIENCIAPESSOA';
      ExecutaAcao('T',idPessoa,IBQVinculadosIDDEFICIENCIA.Value);
      AbrirTabelas;
   end;
end;

procedure Tvinculacaodeficiencias_frm.AbrirTabelas;
begin
   with IBQSelecionar do
   begin
      try
         if Active then Close;
         ParamByName('PESSOA').AsInteger := idPessoa;
         Prepare;
         Open;
      except
      end;
   end;
   with IBQVinculados do
   begin
      try
         if Active then Close;
         ParamByName('PESSOA').AsInteger := idPessoa;
         Prepare;
         Open;
      except
      end;
   end;
end;

procedure Tvinculacaodeficiencias_frm.ExecutaAcao(Acao: String; Pessoa,
  Deficiencia: Integer);
begin
   with IBSPAcaoDeficiencia do
   begin
      try
         ParamByName('ACAO').AsString          := Acao;
         ParamByName('CODIGOPESSOA').AsInteger := Pessoa;
         ParamByName('CODIGODEFICIENCIA').AsInteger := Deficiencia;
         Prepare;
         ExecProc;
         DMSistema_frm.IBTransactionSIGAS.CommitRetaining;
      except
         DMSistema_frm.IBTransactionSIGAS.RollbackRetaining;
      end;
   end;
end;

procedure Tvinculacaodeficiencias_frm.IBQSelecionarAfterOpen(DataSet: TDataSet);
begin
   with IBQSelecionar do
   begin
      try
         FetchAll;
         First;
      except
      end;
   end;
end;

procedure Tvinculacaodeficiencias_frm.IBQVinculadosAfterOpen(DataSet: TDataSet);
begin
   with IBQVinculados do
   begin
      try
         FetchAll;
         First;
      except
      end;
   end;
end;

procedure Tvinculacaodeficiencias_frm.FormCreate(Sender: TObject);
begin
   //AjustaResolucao(Self, 1024);
   AbrirTabelas;
end;

procedure Tvinculacaodeficiencias_frm.DBGSelecionarDblClick(Sender: TObject);
begin
   SBtnEnviarSelecionadoClick(Self);
end;

procedure Tvinculacaodeficiencias_frm.DBGVinculadoDblClick(Sender: TObject);
begin
   SBtnVoltarSelecionadoClick(Self);
end;

end.
